<h1>Porting Guide</h1>

<p> XORP is a large application, but it is intended to be portable.
We've tried as far as possible to keep the C++ code close to revision
3 of the C++ standard (ISO14882).  Compilers tested to date
have been different versions of GNU g++, mingw, and clang.
(Clang/llvm has bugs on some common platforms, but has been made to
work in the past.)
<P>
A design goal for XORP is placing all system dependencies in the
Forwarding Engine Abstraction (FEA) process.  To make XORP run on a
new platform the FEA must be modified to support it.  The bottom end
of the FEA talks to the operating system to install routes and use raw
sockets.  In most cases, it is this bottom end that needs writing or
modifying to support a new platform.

<P>
Before work on porting the FEA can begin, it will almost certainly be
necessary to change the scons allconfig.py script to support the new
platform and to make compilation fixes for any differences for the new
platform that are not already covered.  It would be preferable for
these changes be orthogonal to existing platforms so the changes can
be integrated into the source tree with minimal work.

